<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0,minimum-scale=1,maximum-scale=1,user-scalable=no">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <!-- <link rel="stylesheet" type="text/css" href="css/index.css">
    <script type="text/javascript" src="js/index.js"></script>
    <style type="text/css"></style> -->
    <title>Document</title>
</head>

<body>

    <script>
        //步骤：
        //1、首先得考虑这一年是否是闰年
        //2、其次在考虑这个月有多少天
        //3、然后还得判断这个月得一号是星期几
        //4、要判断这个月就得一号是星期几得判断这个月1号距离1900年1月1日有多少天，因为1900年1月1日是星期一
        //   ，我们只需要用距离的天数除以7取余就可以判断该年该月1月1日是星期几
        //5、最后打印环节，按照“日 一 二 三 四 五 六”的格式打印，如果该年该月1月1日是星期一，那么就需要在1
        //   前面打印一个空格，以此类推。当空格和日期得的个数满7个之后打印换行。
        
        //判断某年某月是否是闰年
        function isRn(year){
            return year%4===0&&year%100!==0||year%400===0
        }
        //判断这一年的这个月有多少天
        function calcMonthDays(year,month){
            let days
            if(month>=1&&month<=12){
                switch(month){
                    case 2:days=isRn(year)?29:28
                        break
                    case 4:
                    case 6:
                    case 9:
                    case 11:
                        days=30
                        break
                    default:days=31
                }
                return days
            }else{
                console.log('月份的取值为1~12！');
            }
        }
        //判断该年该月该日距离1900年1月1日有多少天
        function totalDays(year,month,date){
            let total=date
            //累加这一年里过去的天数
            for(let i=1;i<month;i++){
                total+=calcMonthDays(year,i)
            }
            //累加这一年之外的天数
            for(let j=1900;j<year;j++){
                total+=isRn(j)?366:365
            }
            return total
        }
        //判断该年该月该日是星期几
        function calcWeekDays(year,month,date){
            return totalDays(year,month,date)%7
        }
        //打印日历
        function print(year,month){
            let str='日\t一\t二\t三\t四\t五\t六\n'
            //打印空白地方
            let blank=calcWeekDays(year,month,1)
            for(let i=1;i<=blank;i++){
                str+=' \t'
            }
            //打印日期
            let days=calcMonthDays(year,month)
            for(let j=1;j<=days;j++){
                    str+=j+'\t'
                    //每七天换一行
                    if((blank+j)%7===0){
                    str+='\n'
                }
            }
            console.log(str);
        }
    </script>
</body>

</html>